﻿#pragma once

#include <cargs.h>
#include <stdarg.h>

#include "bindings.h"

typedef uint8_t Ipv4Addr[4];

typedef struct Config {
	MacAddr src_mac;
	Ipv4Addr src_ip;
	MacAddr gtw_mac;
	Ipv4Addr dns_server;
	uint16_t s_port;
	char *domain_name;
} Config;

/**
 * 从命令行参数中解析出配置信息。
 * 只有 DNS 服务器地址是必须的，其他参数都是可选的。
 * 没有输入的可选参数，会使用默认值。默认值来自拥有网关字段的网卡。
 * 
 * @return 配置信息
 */
Config parse_config(int, char**);

void print_help(void);

int is_ipv4_address(const char *);

void exit_with_message(const char* format, ...);